/************************************************************************

								Heroes IV
					  Copyright 2000, The 3DO Company

	------------------------------------------------------------------
  						 adv_actor_model_cache.h

	$Header: /heroes4/adv_actor_model_cache.h $

	$NoKeywords: $

 ************************************************************************/

#if !defined( ADV_ACTOR_MODEL_CACHE_H_INCLUDED )
#define ADV_ACTOR_MODEL_CACHE_H_INCLUDED

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <string>
#include "adv_actor_model_ptr.h"

// ------------------------------------------------------------------------------
// Details namespace
// ------------------------------------------------------------------------------

enum t_creature_type;
enum t_town_type;

namespace adv_actor_model_cache_details
{
	// ------------------------------------------------------------------------------
	// t_initializer class
	// ------------------------------------------------------------------------------
	class t_initializer
	{
	public:
		// Constructor
		t_initializer();
	} const k_initializer;

} // Details namespace

// ------------------------------------------------------------------------------
// Create an adventure actor model by name
// ------------------------------------------------------------------------------
t_abstract_cache< t_adv_actor_model > & get_adv_actor_model_cache( std::string const & name );

// --------------------------------------------------------
// Map the adventure actor model name if the name
// specified is an alias
// --------------------------------------------------------
std::string map_adv_actor_model_name( std::string const & name );

std::string get_adv_model_name( t_creature_type creature_type );

t_adv_actor_model_ptr get_adv_model( t_creature_type creature );

std::string get_adv_model_name(
	t_town_type	alignment,
	bool		is_male,
	bool		is_spellcaster );

t_adv_actor_model_ptr get_adv_model( t_town_type alignment,
								     bool		 is_male,
								     bool		 is_spellcaster );


#endif // !defined( ADV_ACTOR_MODEL_CACHE_H_INCLUDED )
